//
//  HMStatusListViewModel.swift
//  01-SinaWeibo
//
//  Created by 周英培 on 16/5/25.
//  Copyright © 2016年 周英培. All rights reserved.
//   针对tableView的视图模型 里面是模型数组

import UIKit
/*
 在视图模型里面不适用import SVProgressHUD
 */
class HMStatusListViewModel: NSObject {
    
    //定义数据源数组 模型数组
    var statusViewModelArray : [HMStatusViewModel] = [HMStatusViewModel]()

    //请求首页数据  加个闭包
    func loadHomePageData(isPulling : Bool,finished: (isSuccess : Bool,count : Int) -> ()) {
        
        //根据是否正在转动 处理since_id和max_id为互斥参数 since_id：数组的第一个元素   max_id：数组的最后一个元素
        var since_id : Int64 = 0
        var max_id : Int64 = 0
        
        if isPulling {
            
            max_id = statusViewModelArray.last?.status?.id ?? 0
            
        }else {
        
            since_id = statusViewModelArray.first?.status?.id ?? 0
        }
              
        HMNetworkTools.sharedTools.loadHomeData(since_id,max_id: max_id) { (responseObject, error) in
            
            if error != nil {
                
//                SVProgressHUD.showErrorWithStatus(commonError)
                
                //失败回调
                finished(isSuccess: false,count: 0)
                
                return
                
            }
            
            //请求回来的网络数据
            //        print(responseObject)
            
            //处理请求回来的网络数据
            guard let dict = responseObject as? [String : AnyObject] else {
                
                //失败回调
                finished(isSuccess: false,count: 0)
 
                return
                
            }
            
            //打印字典
            print(dict)
            
            //根据字典里面的“statuses”来获取数组
            guard let array = dict["statuses"] as? [[String : AnyObject]] else {
                
                //失败回调
                finished(isSuccess: false,count: 0)
 
                return
                
            }
            
            //打印数组
            print(array)
            
            //MARK:便利数组 获取字典 然后字典转模型
            //定义空的可变数组 用来装模型 此时 要装的是视图模型 所以类型此时换成了视图模型
            var arrM = [HMStatusViewModel]()
            
            for item in array {
                
                //字典转模型
                let statusM = HMStatusModel(dict: item)
                
                //此时 数组里面要装的是视图模型
                let viewModel = HMStatusViewModel(status: statusM)
                
                //添加到可变数组中
                arrM.append(viewModel)
                
            }
            
            //赋值 下拉刷新 赋值时 新数据加老数据
//            self.statusViewModelArray = self.statusViewModelArray + arrM
//            self.statusViewModelArray = arrM + self.statusViewModelArray
//            self.statusViewModelArray = arrM
            
            if isPulling {
            
            //加载更多数据
                self.statusViewModelArray = self.statusViewModelArray + arrM
            
            } else {
            
               self.statusViewModelArray = arrM + self.statusViewModelArray
            
            }
            
            //刷新数据  在这里通过闭包回调去刷新数据
            //成功回调
            finished(isSuccess: true,count: arrM.count)
//            self.tableView.reloadData()
            
        }
        
    }
    
}
